Systems and methods for providing a tagging interface for external content

ABSTRACT

Computer-implemented systems and methods are disclosed for providing a graphical user interface for tagging external content. In accordance with some embodiments, a method is provided for tagging content external to a database system. The method comprises accessing the external content of an electronic device. The method may comprise enhancing the web browser by providing a tagging interface for tagging at least a portion of the external content. The method may further comprise receiving created tag associated with a tagged portion of the external document content, and exporting the external content and the received tag to the database system. The tagging interface can also provide an option to export the created tag to an internal database system.

INCORPORATION BY REFERENCE TO ANY PRIORITY APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/025,653, filed Sep. 12, 2013, which application claims benefit ofU.S. Provisional Patent Application No. 61/801,556, filed Mar. 15, 2013.The entire disclosure of each of the above items is hereby made part ofthis specification as if set forth fully herein and incorporated byreference for all purposes, for all that it contains.

Any and all applications for which a foreign or domestic priority claimis identified in the Application Data Sheet as filed with the presentapplication are hereby incorporated by reference under 37 CFR 1.57.

BACKGROUND

Data is commonly stored in computer-based systems in fixed, rigidlystructured data stores. For example, one common type of data store is a“flat” file such as a spreadsheet, plain-text document, or XML document.Another common type of data store is a relational database comprisingone or more tables. Other examples of data stores that comprisestructured data include, without limitation, files systems, objectcollections, record collections, arrays, hierarchical trees, linkedlists, stacks, and combinations thereof.

Often, the underlying structure of these types of data stores is poorlysuited for data analysis. One approach for facilitating a more efficientanalysis of data in such data stores is to reorganize that dataaccording to an object model that defines object structures andrelationships between the object structures. Tagging is a method used tocreate objects, properties, or links between objects and/or propertiesin structured or unstructured data. It can add structure to unstructureddata or add further structure to structured data.

BRIEF DESCRIPTION OF THE DRAWINGS

Reference will now be made to the accompanying drawings showing exampleembodiments of the present application, and in which:

FIG. 1 is an block diagram depicting an exemplary internal databasesystem, consistent with embodiments of the present disclosure.

FIGS. 2A and 2B are screenshots depicting an exemplary interface fortagging an unstructured document stored in the database system of FIG.1, consistent with embodiments of the present disclosure.

FIG. 3 is a block diagram depicting an exemplary system comprising thedatabase system of FIG. 1 and one or more components external to thedatabase system of FIG. 1, consistent with embodiments of the presentdisclosure.

FIG. 4 is a screenshot depicting an exemplary tagging interface via aweb browser displaying an external content, consistent with embodimentsof the present disclosure.

FIG. 5 is a flowchart representing an exemplary method for taggingexternal content, consistent with embodiments of the present disclosure.

FIG. 6 is block diagram of an exemplary computer system with whichembodiments described herein can be implemented, consistent withembodiments of the present disclosure.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

Reference will now be made in detail to the embodiments, the examples ofwhich are illustrated in the accompanying drawings. Whenever possible,the same reference numbers will be used throughout the drawings to referto the same or like parts.

FIG. 1 shows, in block diagram form, an exemplary data fusion system100, consistent with embodiments of the present disclosure. Among otherthings, system 100 facilitates transformation of one or more datasources, such as data sources 130, into an object model 160, whosesemantics are defined by an ontology 150. The transformation can beperformed for a variety of reasons. For example, a databaseadministrator can wish to import data from data sources 130 into adatabase 170 for persistently storing object model 160. As anotherexample, a data presentation component (not depicted) can transforminput data from data sources 130 “on the fly” into object model 160.Object model 160 can then be utilized, in conjunction with ontology 150,for analysis through graphs and/or other data visualization techniques.

System 100 comprises a definition component 110 and a translationcomponent 120, both implemented by one or more processors on one or morecomputing devices executing hardware and/or software-based logic forproviding various functionality described herein. As will be appreciatedfrom the present disclosure, system 100 can comprise fewer or additionalcomponents that provide various functionalities described herein. Suchcomponents are, for clarity, omitted from FIG. 1. Moreover, thecomponent(s) of system 100 responsible for providing variousfunctionalities can further vary from embodiment to embodiment.

Definition component 110 generates and/or modifies ontology 150 and aschema map 140. Exemplary embodiments for defining an ontology (such asontology 150) is described in U.S. Pat. No. 7,962,495 (the '495 patent),issued Jun. 14, 2011, the entire contents of which are expresslyincorporated herein by reference for all purposes. Among other things,the '495 patent describes embodiments that define a dynamic ontology foruse in creating data in a database. For creating a database ontology,one or more object types are created where each object type can includeone or more properties. The attributes of object types or property typesof the ontology can be edited or modified at any time. And for eachproperty type, at least one parser definition is created. The attributesof a parser definition can be edited or modified at any time.

In some embodiments, each property type is declared to be representativeof one or more object types. A property type is representative of anobject type when the property type is intuitively associated with theobject type. For example, a property type of “Social Security Number”may be representative of an object type “Person” but not representativeof an object type “Business.”

In some embodiments, each property type has one or more components and abase type. In some embodiments, a property type may comprise a string, adate, a number, or a composite type consisting of two or more string,date, or number elements. Thus, property types are extensible and canrepresent complex data structures. Further, a parser definition canreference a component of a complex property type as a unit or token.

An example of a property having multiple components is a Name propertyhaving a Last Name component and a First Name component. An example ofraw input data is “Smith, Jane.” An example parser definition specifiesan association of imported input data to object property components asfollows: {LAST_NAME}, {FIRST_NAME}→Name:Last, Name:First. In someembodiments, the association {LAST_NAME}, {FIRST_NAME} is defined in aparser definition using regular expression symbology. The association{LAST_NAME}, {FIRST_NAME} indicates that a last name string followed bya first name string comprises valid input data for a property of typeName. In contrast, input data of “Smith Jane” would not be valid for thespecified parser definition, but a user could create a second parserdefinition that does match input data of “Smith Jane.” The definitionName:Last, Name:First specifies that matching input data values map tocomponents named “Last” and “First” of the Name property.

As a result, parsing the input data using the parser definition resultsin assigning the value “Smith” to the Name:Last component of the Nameproperty, and the value “Jane” to the Name:First component of the Nameproperty.

Referring back to FIG. 1, schema map 140 can define how various elementsof schemas 135 for data sources 130 map to various elements of ontology150. Definition component 110 receives, calculates, extracts, orotherwise identifies schemas 135 for data sources 130. Schemas 135define the structure of data sources 130—for example, the names andother characteristics of tables, files, columns, fields, properties, andso forth. Definition component 110 furthermore optionally identifiessample data 136 from data sources 130. Definition component 110 canfurther identify object type, relationship, and property definitionsfrom ontology 150, if any already exist. Definition component 110 canfurther identify pre-existing mappings from schema map 140, if suchmappings exist.

Based on the identified information, definition component 110 cangenerate a graphical interface 115. Graphical interface 115 can bepresented to users of a computing device via any suitable outputmechanism (e.g., a display screen, an image projection, etc.), and canfurther accept input from users of the computing device via any suitableinput mechanism (e.g., a keyboard, a mouse, a touch screen interface).Graphical interface 115 features a visual workspace that visuallydepicts representations of the elements of ontology 150 for whichmappings are defined in schema map 140. Graphical interface 115 alsoincludes controls for adding new elements to schema map 140 and/orontology 150, including objects, properties of objects, andrelationships, via the visual workspace. After elements of ontology 150are represented in the visual workspace, graphical interface 115 canfurther provide controls in association with the representations thatallow for modifying the elements of ontology 150 and identifying how theelements of ontology 150 correspond to elements of schemas 135.Optionally, the graphical interface 115 can further utilize the sampledata 136 to provide the user with a preview of object model 160 as theuser defines schema map 140. In response to the input via the variouscontrols of graphical interface 115, definition component 110 cangenerate and/or modify ontology 150 and schema map 140.

In some embodiments, graphical user 115 can provide an interfaceproviding a user with the ability to add structure to an unstructureddocument stored in data sources 130 by tagging one or more portions(e.g., text) within the document. Defining tags and applying these tagsto a portion of the document can create object, properties, or linkscreating a relationship between one or more objects and/or properties.An exemplary interface, including related features and pop-up windows,is described below with reference to FIGS. 2A and 2B.

FIG. 2A is a screenshot depicting an exemplary interface 200 for taggingan unstructured document stored in the database system of FIG. 1. Asshown in FIG. 2A, interface 200 can display a document that wasunstructured before tag 210 had been applied. To tag text in thedocument, a user can for example select text (in this case, “Olympics”)and right-click on a mouse for a pop-up 220 to appear and to provide theuser with the ability to select an “Add Tag . . . ” option.

Selecting the “Add Tag . . . ” option can result in, for example, a “Tagas . . . ” pop-up window appearing, an example of which is shown in FIG.2B. Pop-up window 230 provides the user with the ability to assignselected text (in this case, “Dave McGovern”) to a person object and/ora name property.

Referring back to FIG. 1, transformation component 120 can be invokedafter schema map 140 and ontology 150 have been defined or redefined.Transformation component 120 identifies schema map 140 and ontology 150.Transformation component 120 further reads data sources 130 andidentifies schemas 135 for data sources 130. For each element ofontology 150 described in schema map 140, transformation component 120iterates through some or all of the data items of data sources 130,generating elements of object model 160 in the manner specified byschema map 140. In some embodiments, transformation component 120 canstore a representation of each generated element of object model 160 ina database 170. In some embodiments, transformation component 120 isfurther configured to synchronize changes in object model 160 back todata sources 130.

Data sources 130 can be one or more sources of data, including, withoutlimitation, spreadsheet files, databases, email folders, documentcollections, media collections, contact directories, and so forth. Datasources 130 can include structured data (e.g., a database, a .csv file,or any tab delimited or fixed-width file), semi-structured data (e.g.,an email, an email server, or forms such as a suspicious activity reportor currency transaction report), or unstructured data (e.g., encodedfiles such as PDF, sound, and image files). Data sources 130 can includedata structures stored persistently in non-volatile memory. Data sources130 can also or instead include temporary data structures generated fromunderlying data sources via data extraction components, such as a resultset returned from a database server executing an database query.

Schema map 140, ontology 150, and schemas 135 can be stored in anysuitable data structures, such as XML files, database tables, and soforth. In some embodiments, ontology 150 is maintained persistently.Schema map 140 can or cannot be maintained persistently, depending onwhether the transformation process is perpetual or a one-time event.Schemas 135 need not be maintained in persistent memory, but can becached for optimization.

Object model 160 comprises collections of elements such as typedobjects, properties, and relationships. The collections can bestructured in any suitable manner. In some embodiments, a database 170stores the elements of object model 160, or representations thereof. Insome embodiments, the elements of object model 160 are stored withindatabase 170 in a different underlying format, such as in a series ofobject, property, and relationship tables in a relational database.

FIG. 3 is a block diagram depicting an exemplary system 300 comprisingdatabase system of FIG. 1 and one or more components external to thedatabase system of FIG. 1. System 300 comprises database system 100,which is referred to as an “internal system,” and one or more componentslocated external to database system 100. These external components caninclude, for example, electronic device 310, network 320, and server330.

Electronic device 310 can provide the ability to communicate with server330 via network 320. By way of example, electronic device 310 can be apersonal computer, a tablet computer, a personal digital assistant(PDA), a mobile phone, a smart-phone, or any other web-enabled computingdevice with a processor and a memory. Electronic device 310 can providesupport for software applications including, a web browser (or othernetwork communication software), that can also comprise a specialadd-on, a plug-in, or a bookmarklet. In some embodiments, electronicdevice 310 and a portion of network 320 can be included in internaldatabase system 100. For example, electronic device 310 could providegraphical interface 115 of internal database system 100.

Electronic device 310 can also include, for example, one or moreprocessors (not shown), a memory device (not shown), and a datainterface (not shown). The one or more processors can be a single ormultiple microprocessors, field programmable gate arrays (FPGAs), ordigital signal processors (DSPs) capable of executing particular sets ofinstructions. Computer-readable instructions can be stored on a tangiblenon-transitory computer-readable medium, such as a flexible disk, a harddisk, a CD-ROM (compact disk-read only memory), and MO(magneto-optical), a DVD-ROM (digital versatile disk-read only memory),a DVD RAM (digital versatile disk-random access memory), or asemiconductor memory. Alternatively, the instructions can be implementedin hardware components or combinations of hardware and software such as,for example, Application Specific Integrated Circuits (ASICs), specialpurpose computers, or general purpose computers.

Server 330 can comprise hardware, software, or a combination of boththat provides the capability for communicating with electronic device310 via network 320. Server 330 provides content to electronic device310. This content is stored external to database system and can bereferred to as “external content.” External content can include a webpage, a document, a PDF file, a sound or audio file, an image or videofile, a database, an email, a form, etc. In some embodiments, server 330can be a part of a network cloud, which can include, for example, one ormore networked servers.

Network 320 can be, for example, the Internet, an intranet, a local areanetwork, a wide area network, a campus area network, a metropolitan areanetwork, an extranet, a private extranet, any set of two or more coupledelectronic devices, or a combination of any of these or otherappropriate networks. In the exemplary embodiment of FIG. 3, network 320is considered external to database system 100, but portions of network320 (as stated above) can be located in internal database system 100.

FIG. 4 is a screenshot 400 depicting an exemplary tagging interface viaa web browser that can display external content. For purposes ofillustration, screenshot 400 depicts a news web page on a web site(e.g., BBC™ web site) displaying external content 460 on a web browserof an electronic device (e.g., electronic device 310). Screenshot 400also depicts tagging interface 450. In some embodiments, tagginginterface 450 can be displayed in response to a user installing andactivating a bookmarklet in the web browser. In other embodiments,tagging interface 450 can be displayed in response to a user installingand activating a plug-in in the web browser. In some embodiments, a usermay login to internal database system 100 before the bookmarklet orplugin is activated.

Tagging interface 450 can be used to create tags associated with atleast a portion of external content 460. In some embodiments, the usercan select at least a portion of external content 460. For example, ifexternal content 460 is text-based, the user can select at least aportion of the text of external content 460. In other embodiments, ifexternal content is an image or video, the user can select at least aportion of the image or at least a frame of the video to create one ormore tags associated with the selected portions of external content 460.It can be understood that there can be other types of external content460 that can also be selected for creating tags. For example, an audiofile having a voice of a person can be tagged as a property of a personobject.

When the user selects a portion of external content 460, at least someof the fields of tagging interface 450 (e.g., TITLE 412, TYPE 410, etc.)can be automatically populated. In some embodiments, this automaticpopulation of fields can depend on the type of external content 460. Forexample, in a text-based document, TITLE 412 field can be automaticallypopulated with the selected portion of the text. In the screenshot ofFIG. 4, TITLE 412 can be automatically populated with the selectedportion of text “Curiosity.” In some embodiments, TYPE 410 field oftagging interface can also be automatically populated. In the screenshotof FIG. 4, TYPE 410 can be automatically populated with a type of theselected portion of text, “Ground Travel.” In some other embodiments,the fields of tagging interface 450 can be filled manually by the useror can be selected from a pull-down list of options.

Tagging interface 450 includes options for designating the type of tag.These options include a property tag option 404, an object tag option406, and a link tag option 408. It will be understood by a skilledperson in the art that it is possible to customize tagging interface 450to modify the various available options. For example, a selection ofproperty tag option 404 could result in tagging interface 450 adding oneor more fields for linking an object to the property. For example, theproperty “Curiosity” could be linked to an object “Robot.” Moreover, aselection of link tag option 408 could result in tagging interface 450adding one or more fields linking two or more objects or two or moreproperties.

After the tagging option is selected and the appropriate fields arefilled in, a Create Tag button 414 can be selected to create a tagassociated with the selected portion of external content 460. In someembodiments, the properties of created tag can be modified after the tagis created. For example, TYPE 410 field can be changed, if desired, from“Ground Travel” to “Air Travel” after the tag is created. In someembodiments, the created tag can be stored in a memory of the electronicdevice.

After an object tag is created, it can be displayed in a Tagged objectsfield 418 of tagging interface 450. Tagged objects field 418 can beuseful as it can display all of the created object tags associated withexternal content 460 in one portion of tagging interface 450. Taggedobjects field 418 can also be useful as it can enable a user to modifyany of the created tags. Moreover, after property tag option 404 isselected, tagged objects field 418 of tagging interface 450 allows auser to select an appropriate tagged object from tagged objects field418 for linking that property tag to a tagged object. Further, after alink tag option 408 is selected, tagged objects field 418 of tagginginterface 450 could allow a user to select two or more appropriatetagged objects from the tagged objects field 418. Moreover, tagginginterface 450 could provide a tagged properties field (not shown) thatwould provide a user with the option of linking two or more taggedproperties.

Tagging interface 450 can also include, in some embodiments, a searchfor object field 416, which can be used to search for already existingcreated tag objects in internal database system (e.g., Database System100). For example, FIG. 4 depicts “Search for object” 416, which ispopulated with the tag “Curiosity.” If a created tag object is alreadyassociated with “Curiosity” in the internal database system, resultsassociated with the existing created tag objects can be displayed in“Search for object” field 416. If such results indeed exist, tagginginterface 450 alone or in combination with internal database system 100can sync the tagged object from tagging interface 450 with the objectexisting in internal database system 100. In some embodiments, tagginginterface 450, using “Search for object” field 416, allows the abilityto create links between tagged objects and/or properties from externalcontent with objects and/or properties in internal database system 100.In some embodiments, “Search for object” field 416 provides the abilityto create object types and/or property types for entities that exist ininternal database system 100. In some embodiments, a user of electronicdevice 310 is logged in to database system 100 in order to perform thesyncing operation.

Created tags and external content 460 can be gathered for storage using,for example, an application program interface (API), such as a Javaclient API. The API can create one or more parameter-value pairsassociated with the tag. For example, with reference to the exemplaryembodiments of FIG. 4, the parameter-value pairs that are created couldbe TagOption:Object, Title:Curiosity, Type:Ground Travel, Content:<labelfor external content 460>, DateAdded:2012/08/20, User:John Doe, etc.Moreover, external content 460 can be stored in a cache or a directoryassociated with the tagging interface under a label for that externalcontent 460. By way of example, external content 460 can be stored asexternal content (as depicted in FIG. 4), a representation of externalcontent 460, alphanumeric characters of external content 460, and/or anyaudio/visual data of external content 460.

Created tags and external content 460 can be exported to an internaldatabase system (e.g., Database System 100) by selecting an exportbutton 420 (such as the “Export to Palantir” button in FIG. 4) ofTagging Interface 450. In some embodiments, electronic device 310 mustbe logged into internal database system 100 to export the content 460and any created tags. In some embodiments, content and created tags canbe stored in the external system (e.g., memory of electronic device 310or a cache associated with a web browser), in internal database system100, or any combination thereof. In embodiments where the content andcreated tags are stored in the external system, the content and createdtags can be exported after electronic device 310 connects to internaldatabase system 100. In some embodiments, the selection of create tagbutton 414 causes tagging interface 450 to automatically export thecontent and created one or more tags to internal database system 100. Insome embodiments, electronic device 310 can include an interface forconverting the stored parameter-value pairs and the stored content intodata compatible with internal database system 100. Alternatively, oradditionally, in some embodiments, internal database system 100 includesthe interface.

After receiving external content and the created one or more tags,internal database system 100 stores the exported data into appropriatecomponents. For example, external content 460 (or a converted format ofexternal content 460) can be stored in data sources 130, while theparameter-value pairs that were created by electronic device 310 (or aconverted format of the parameter value-pairs) can be stored in database170 according to ontology 150 and object model 160.

FIG. 5 is a flowchart representing an exemplary method 500 performed byan electronic device for tagging external content. While the flowchartdiscloses the following steps in a particular order, it will beappreciated that at least some of the steps can be moved, modified, ordeleted where appropriate, consistent with the teachings of the presentdisclosure.

In this exemplary embodiment, a user can utilize an electronic device(e.g., electronic device 310) that comprises a web browser like, forexample, Google™ Chrome™, Mozilla™ Firefox™, Microsoft™ InternetExplorer™, etc. The user can run a web browser to access contentexternal to an internal database system (e.g., database system 100) thatis present on a website or otherwise accessible via a network (e.g.,network 320), such as the Internet or an intranet. In this disclosure,intranet can mean any network that is understood as a network that doesnot encompass the Internet including, for example, a local area network,a wide area network, a campus area network, a metropolitan area network,an extranet, a private extranet, any set of two or more coupledelectronic devices, or a combination of any of these or otherappropriate networks. Also, for the exemplary embodiment of FIG. 5, itis understood that the electronic device is external to an internaldatabase system, as described in relation to FIGS. 1 and 2 earlier,where the database system is a part of an internal network.

In step 505, a bookmarklet is installed in the web browser of theelectronic device. A bookmarklet can be a bookmark that is stored in aweb browser and can contain JavaScript™ commands to extend the webbrowser's functionality. That is, a bookmarklet can be a simple“one-click” tool that can add functionality to the web browser. Forexample, a bookmarklet can modify the appearance of a web page withinthe web browser by changing the font size or the background color of thetext, and/or extract data from a web page.

In some embodiments, a plug-in, instead of a bookmarklet, can beinstalled. A plug-in can be implemented as a set of software componentsthat adds specific abilities to a larger software application, like aweb browser, to enable customizing the functionality of the softwareapplication. For example, a plug-in can be installed in a web browser toenable the web browser to play video.

There are some advantages to using a bookmarklet as opposed to aplug-in. For example, a bookmarklet can be web browser-agnostic. Thatis, the same code underlying a given bookmarklet can be used to run onany of the web browser such as Google™ Chrome™, Mozilla™ Firefox™,Microsoft™ Internet Explorer™, etc. A plug-in, on the other hand, neednot be compatible between various web browsers. A user might choose toinstall a bookmarklet due to its simplicity and browser-agnosticcapability.

In some embodiments, a bookmarklet can be installed, for example, by aprocess similar to adding a bookmark to the web browser. For example, ifthe user intends to bookmark a particular website, the user can drag anicon associated with the web address (also known as uniform resourcelocator) of the website to the bookmark bar of the web browser. Similarto the process of adding a bookmark, the user can drag an object or linkassociated with a bookmarklet to the bookmark bar of the web browser toinstall the bookmarklet to the web browser. As known in the art, thereare several other ways of adding a bookmarklet, for example, usingkeyboard shortcuts, importing bookmarklets from other web browsers,manually adding by right-clicking the bookmark bar and selecting addingpage, etc.

A plug-in can be installed in the web browser instead of, or in additionto, a bookmarklet. A plug-in can be installed similar to any softwareapplication like, for example, the web browser. The user can firstdownload the plug-in from an appropriate web site and then can proceedto install the plug-in. Since a typical plug-in is designed to becompatible to a specific web browser (e.g., Google™ Chrome™, Mozilla™Firefox™, Microsoft™ Internet Explorer™, etc.), the plug-in can become apart of the web browser automatically after the plug-in is installed.

Referring again to FIG. 5, in step 510, the electronic device accessesthe external content using the web browser. In this disclosure,“external content” signifies that the accessed content is external to aninternal database system (such as Database System 100). The accessedexternal content can be found on the Internet or can be part of anintranet of an organization. Additionally, external content can bedigital content that is accessible via web browsers of electronicdevices. In some embodiments, external content can comprise structuredor non-structured data including web pages, documents, email messages,text messages, Adobe™ PDF documents, and other media-based content. Theother media-based content can comprise external content based on, forexample, audio, video, etc. In some embodiments, accessing externalcontent can comprise, for example, opening a web page or a document inthe web browser. In some other embodiments, accessing external contentcan comprise, for example, modifying or editing external content in theweb browser.

In step 515, the web browser is enhanced by providing a tagginginterface, such as tagging interface 450. Enhancing the web browser caninvolve rewriting or modifying at least a portion of the underlying codeof the web browser, wherein the web browser can display at least some ofthe accessed external content. The enhancement can be accomplished byrunning or activating the installed bookmarklet. In some embodiments,when the installed bookmarklet is activated, the underlying code of theweb browser specific to the accessed external content can be modified oraltered in order to display a tagging interface in the web browser. Forexample, when a web page on the Internet is the accessed externalcontent (say, a news web page accessed at <http://www.cnn.com>) and isdisplayed in the web browser, the activation of the installedbookmarklet can enhance the web browser for displaying a tagginginterface (such as tagging interface 450) in the web browser.

In some embodiments, enhancing the web browser can also includeenhancing the local copy of the external content being accessed in theweb browser. For example, if the accessed external content is a news webpage associated with CNN™, as noted above, enhancing the web browser caninclude modifying or editing the specific content associated with thedisplayed CNN™'s news web page.

Next, in some embodiments, the user can select or highlight at least aportion of the external content for tagging. For example, the user canselect a portion of text of a news web page for tagging that portion ofthe content. The user can select or highlight a portion of the externalcontent (for example, selecting by using a mouse or touchpad) and canselect, using the tagging interface, a type of tag to be created forthat selected or highlighted portion. The tagging interface can be agraphical user interface that enables a user to create tags for taggingexternal content. In some embodiments, the tagging interface can enablea user to create tags of different kinds, for example, an object tag(e.g., object tag option 406), a link tag (e.g., link tag option 408),and a property tag (e.g., property tag option 404). The selecting ofvarious tag options can provide different functionalities and fields, asdiscussed above. After the user selects an appropriate tag option forthe selected portion of the external content, the tagging interfaceprovides the ability to create a tag. For example, the tagging interfacecan include an option called “Create Tag” (Create Tag 414 of FIG. 4).

In step 520, the created tag that is associated with the enhanced webbrowser is received by the tagging interface. In some embodiments, oneor more created tags can be associated with the enhanced portion of theexternal content. For example, FIG. 4 shows that the text “Curiosity”402 was selected from the web page displayed in the web browser of FIG.4. Also, FIG. 4 depicts tagging interface 450 enabling the creation ofan object tag associated with the selected text, “Curiosity.” After theuser selects the text “Curiosity,” the user can assign some propertiesfor a tag to-be-created and finishes the process of creating the objecttag by selecting the option create tag button 414 of FIG. 4. After thecreate tag button 414 is selected, a tag associated with the selectedtext, “Curiosity” is created and received by tagging interface 450.

In step 525, the received tag is stored. The received tag can be storedin an external system (e.g., a memory of the electronic device or acache associated with web browser), or a combination of both. In step530, the received tag and the external content can be exported to aninternal database system (internal database system 100). In someembodiments, the electronic device must be logged into the internaldatabase system to export the external content and any created tags. Insome embodiments, content and created tags can be stored in theelectronic device and be later exported after the electronic deviceconnects to the internal database system. In some embodiments, thereceipt of a created tag causes an automatic export of the content andcreated one or more tags to the internal database system. In someembodiments, the receipt of the created tag is stored to the internaldatabase system and export step 530 may not be needed.

According to some embodiments, the operations, techniques, and/orcomponents described herein are implemented by one or morespecial-purpose computing devices (e.g., electronic device 310). Thespecial-purpose computing devices can be hard-wired to perform theoperations, techniques, and/or components described herein, or caninclude digital electronic devices such as one or moreapplication-specific integrated circuits (ASICs) or field programmablegate arrays (FPGAs) that are persistently programmed to perform theoperations, techniques and/or components described herein, or caninclude one or more general purpose hardware processors programmed toperform such features of the present disclosure pursuant to programinstructions in firmware, memory, other storage, or a combination. Suchspecial-purpose computing devices can also combine custom hard-wiredlogic, ASICs, or FPGAs with custom programming to accomplish thetechnique and other features of the present disclosure. Thespecial-purpose computing devices can be desktop computer systems,portable computer systems, handheld devices, networking devices, or anyother device that incorporates hard-wired and/or program logic toimplement the techniques and other features of the present disclosure.

The one or more computing devices can be generally controlled andcoordinated by operating system software, such as iOS, Android,Blackberry, Chrome OS, Windows XP, Windows Vista, Windows 7, Windows 8,Windows Server, Windows CE, Unix, Linux, SunOS, Solaris, VxWorks, orother compatible operating systems. In other embodiments, the computingdevice can be controlled by a proprietary operating system. Conventionaloperating systems control and schedule computer processes for execution,perform memory management, provide file system, networking, I/Oservices, and provide a user interface functionality, such as agraphical user interface (“GUI”), among other things.

By way of example, FIG. 6 is a block diagram that illustrates a computersystem 600. Computer system 600 includes a bus 602 or othercommunication mechanism for communicating information, and one or morehardware processors 604, coupled with bus 602 for processinginformation. One or more hardware processors 604 can be, for example,one or more general purpose microprocessors.

Computer system 600 also includes a main memory 606, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 602for storing information and instructions to be executed by processor604. Main memory 606 also can be used for storing temporary variables orother intermediate information during execution of instructions to beexecuted by processor 604. Such instructions, when stored innon-transitory storage media accessible to one or more processors 604,render computer system 600 into a special-purpose machine that iscustomized to perform the operations specified in the instructions.

Computer system 600 further includes a read only memory (ROM) 608 orother static storage device coupled to bus 602 for storing staticinformation and instructions for processor 604. A storage device 610,such as a magnetic disk, optical disk, or USB thumb drive (Flash drive),etc., is provided and coupled to bus 602 for storing information andinstructions.

Computer system 600 can be coupled via bus 602 to a display 612, such asa cathode ray tube (CRT), an LCD display, or a touchscreen, fordisplaying information to a computer user. An input device 614,including alphanumeric and other keys, is coupled to bus 602 forcommunicating information and command selections to processor 604.Another type of user input device is cursor control 616, such as amouse, a trackball, or cursor direction keys for communicating directioninformation and command selections to processor 604 and for controllingcursor movement on display 612. The input device typically has twodegrees of freedom in two axes, a first axis (for example, x) and asecond axis (for example, y), that allows the device to specifypositions in a plane. In some embodiments, the same directioninformation and command selections as cursor control may be implementedvia receiving touches on a touch screen without a cursor.

Computer system 600 can include a user interface module to implement aGUI that may be stored in a mass storage device as executable softwarecodes that are executed by the one or more computing devices. This andother modules may include, by way of example, components, such assoftware components, object-oriented software components, classcomponents and task components, processes, functions, attributes,procedures, subroutines, segments of program code, drivers, firmware,microcode, circuitry, data, databases, data structures, tables, arrays,and variables.

In general, the word “module,” as used herein, refers to logic embodiedin hardware or firmware, or to a collection of software instructions,possibly having entry and exit points, written in a programminglanguage, such as, for example, Java, Lua, C or C++. A software modulecan be compiled and linked into an executable program, installed in adynamic link library, or written in an interpreted programming languagesuch as, for example, BASIC, Perl, or Python. It will be appreciatedthat software modules can be callable from other modules or fromthemselves, and/or can be invoked in response to detected events orinterrupts. Software modules configured for execution on computingdevices can be provided on a computer readable medium, such as a compactdisc, digital video disc, flash drive, magnetic disc, or any othertangible medium, or as a digital download (and can be originally storedin a compressed or installable format that requires installation,decompression, or decryption prior to execution). Such software code canbe stored, partially or fully, on a memory device of the executingcomputing device, for execution by the computing device. Softwareinstructions can be embedded in firmware, such as an EPROM. It will befurther appreciated that hardware modules can be comprised of connectedlogic units, such as gates and flip-flops, and/or can be comprised ofprogrammable units, such as programmable gate arrays or processors. Themodules or computing device functionality described herein arepreferably implemented as software modules, but can be represented inhardware or firmware. Generally, the modules described herein refer tological modules that may be combined with other modules or divided intosub-modules despite their physical organization or storage.

Computer system 600 can implement the techniques and other featuresdescribed herein using customized hard-wired logic, one or more ASICs orFPGAs, firmware and/or program logic which in combination with thecomputer system causes or programs computer system 600 to be aspecial-purpose machine. According to some embodiments, the techniquesand other features described herein are performed by computer system 600in response to one or more processors 604 executing one or moresequences of one or more instructions contained in main memory 606. Suchinstructions can be read into main memory 606 from another storagemedium, such as storage device 610. Execution of the sequences ofinstructions contained in main memory 606 causes processor 604 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry can be used in place of or in combination withsoftware instructions.

The term “non-transitory media” as used herein refers to any mediastoring data and/or instructions that cause a machine to operate in aspecific fashion. Such non-transitory media can comprise non-volatilemedia and/or volatile media. Non-volatile media includes, for example,optical or magnetic disks, such as storage device 610. Volatile mediaincludes dynamic memory, such as main memory 606. Common forms ofnon-transitory media include, for example, a floppy disk, a flexibledisk, hard disk, solid state drive, magnetic tape, or any other magneticdata storage medium, a CD-ROM, any other optical data storage medium,any physical medium with patterns of holes, a RAM, a PROM, and EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge, and networkedversions of the same.

Non-transitory media is distinct from, but can be used in conjunctionwith, transmission media. Transmission media participates intransferring information between storage media. For example,transmission media includes coaxial cables, copper wire and fiberoptics, including the wires that comprise bus 602. Transmission mediacan also take the form of acoustic or light waves, such as thosegenerated during radio-wave and infra-red data communications.

Various forms of media can be involved in carrying one or more sequencesof one or more instructions to processor 604 for execution. For example,the instructions can initially be carried on a magnetic disk or solidstate drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 600 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 602. Bus 602 carries the data tomain memory 606, from which processor 604 retrieves and executes theinstructions. The instructions received by main memory 606 canoptionally be stored on storage device 610 either before or afterexecution by processor 604.

Computer system 600 also includes a communication interface 618 coupledto bus 602. Communication interface 618 provides a two-way datacommunication coupling to a network link 620 that is connected to alocal network 622. For example, communication interface 618 can be anintegrated services digital network (ISDN) card, cable modem, satellitemodem, or a modem to provide a data communication connection to acorresponding type of telephone line. As another example, communicationinterface 618 can be a local area network (LAN) card to provide a datacommunication connection to a compatible LAN. Wireless links can also beimplemented. In any such implementation, communication interface 618sends and receives electrical, electromagnetic or optical signals thatcarry digital data streams representing various types of information.

Network link 620 typically provides data communication through one ormore networks to other data devices. For example, network link 620 canprovide a connection through local network 622 to a host computer 624 orto data equipment operated by an Internet Service Provider (ISP) 626.ISP 626 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 628. Local network 622 and Internet 628 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 620and through communication interface 618, which carry the digital data toand from computer system 600, are example forms of transmission media.

Computer system 600 can send messages and receive data, includingprogram code, through the network(s), network link 620 and communicationinterface 618. In the Internet example, a server 630 might transmit arequested code for an application program through Internet 628, ISP 626,local network 622 and communication interface 618.

The received code can be executed by processor 604 as it is received,and/or stored in storage device 610, or other non-volatile storage forlater execution.

In the foregoing specification, embodiments have been described withreference to numerous specific details that can vary from implementationto implementation. Certain adaptations and modifications of thedescribed embodiments can be made. Other embodiments can be apparent tothose skilled in the art from consideration of the specification andpractice of the invention disclosed herein. It is intended that thespecification and examples be considered as exemplary only, with a truescope and spirit of the invention being indicated by the followingclaims. It is also intended that the sequence of steps shown in figuresare only for illustrative purposes and are not intended to be limited toany particular sequence of steps. As such, those skilled in the art canappreciate that these steps can be performed in a different order whileimplementing the same method.

What is claimed is:
 1. An apparatus configured to provide a graphicaluser interface for tagging content external to an internal databasesystem, the apparatus comprising: a display device; a memory deviceconfigured to store a set of instructions; and at least one processorconfigured to execute the set of instructions to perform the followingoperations: wherein the at least one processor is further configured toassociate a tag with a portion of content presented in the graphicaluser interface in response to: receiving a selection of at least theportion of content presented in the graphical user interface; andreceiving, via the graphical user interface, a tag-type inputcorresponding to the selected portion of content; electronicallypresent, on the display device, a graphical user interface configured todisplay at least: content from an external database; and a tag-typeselection input that enables a user to designate one of a plurality oftag-types for a tag of external content and one or more property typesand associated property values for the tag, the external contentcomprising at least one of: a web page, a document, a PDF, sound oraudio, an image or video, a database, an email, or a form; and receive,via the graphical user interface and the tag-type selection input, atag.
 2. The apparatus of claim 1, wherein the at least one processor isfurther configured to export the selection of the at least a portion ofcontent presented in the web browser and the tag-type.
 3. The apparatusof claim 1, wherein the tag-type input defines a property of theselection of the at least a portion of content presented in the webbrowser.
 4. The apparatus of claim 1, wherein the selection of at leasta portion of content presented in the web browser comprises text.
 5. Theapparatus of claim 4, wherein receiving a selection of at least aportion of content presented in the web browser comprises highlightingthe text.
 6. The apparatus of claim 1, wherein the selection of at leasta portion of content presented in the web browser comprises an audiofile, image file, or video file.
 7. The apparatus of claim 1, whereinthe at least one processor is further configured to export a selectioninput that enables the user to export the tag and selected content to aninternal database system.
 8. A method for tagging content external to adatabase system, the method being performed by one or more processors ofan electronic device, the method comprising: accessing, with theelectronic device, the external content; receiving, with the electronicdevice, a selection of at least a portion of the external content,wherein the portion of the external content comprises at least one of: aweb page, a document, a PDF, text, sound or audio, an image or video, adatabase, an email, or a form; displaying, with the electronic device,the tagging interface, wherein the tagging interface comprises at leastone graphical user interface that enables a user to create tags; andreceiving, via the tagging interface, a selection of a tag option thatcorresponds with the portion of the external content; tagging, using atagging interface in the web browser, the selected portion of theexternal content; receiving a created tag associated with a taggedportion of the external content, the created tag comprising one or moreproperty types and associated property values; and wherein tagging theselected portion of the external content comprises: receiving aselection of at least the portion of content presented in the graphicaluser interface; and receiving, via the graphical user interface, atag-type input corresponding to the selected portion of content.
 9. Themethod of claim 8, wherein tagging the selected portion of the externalcontent portion defines the portion of the external content to be anobject or a property.
 10. The method of claim 8, wherein the selectionof at least a portion of the external content comprises text.
 11. Themethod of claim 10, wherein the selection of at least a portion of theexternal content comprises highlighting the text.
 12. The method ofclaim 8, wherein the selection of at least a portion of the externalcontent comprises an audio file, image file, or video file.
 13. Themethod of claim 12, wherein the audio file, image file, or video filecomprises a crop of an image, audio, or video.
 14. The method of claim8, further comprising exporting the received selection of the at least aportion of content presented in the web browser and the tag-type inputto the database system.
 15. The method of claim 8, further comprisingexporting the received selection of the at least a portion of content toenable the user to export the tag and selected content to the internaldatabase system.
 16. The method of claim 8, wherein the tag optiondefines a relationship between an object and a property.